package com.yiren.dbaa.module.project_edit.contract;

import com.yiren.backstage.currency.entity.LightCombinationEntity;
import com.yiren.backstage.currency.entity.SingleLightEntity;
import com.yiren.backstage.currency.entity.SiteEntity;
import com.yiren.dbaa.currency.api.CommonCallBack;

import java.util.List;

/**
 * @author lwb
 * @date : 2022/8/18 14:27
 * @description: 灯光组合契约
 */
public interface GroupLightContract {

    interface Presenter {

        /**
         * 加载灯光组合列表
         */
        void loadGroupLightList(View view);

        /**
         * 加载灯光组合的单项灯光列表
         * @param lightCombination
         */
        void loadGroupLightSingleList(LightCombinationEntity lightCombination);

        /**
         * 加载所有单项灯光列表
         */
        void loadAllSingleLightList();

        /**
         * 新增灯光组合
         */
        void addGroupLight(SiteEntity site,CommonCallBack callBack);

        /**
         * 删除灯光组合
         */
        void deleteGroupLit(SiteEntity site,LightCombinationEntity lightCombination, CommonCallBack callBack);

        /**
         * 替换单项灯光
         */
        void replaceSingleLight(SiteEntity site,LightCombinationEntity lightCombination,int position);

        /**
         * 添加单项灯光到灯光组合
         */
        void addSingleLightToGroup(SiteEntity site,List<LightCombinationEntity> lightCombinationList,int position);

        /**
         * 从灯光组合删除单项灯光
         */
        void deleteSingleLightToGroup(SiteEntity site,LightCombinationEntity lightCombination,int position);

        /**
         * 移动单项灯光顺序
         * @param lightCombination
         * @param from
         * @param to
         */
        void moveSingleLight(SiteEntity site,LightCombinationEntity lightCombination,int from,int to);






    }

    interface Model {
        /**
         * 查询所有灯光组合
         *
         * @return
         */
        List<LightCombinationEntity> getAllLightCombinations();

        /**
         * 添加灯光组合
         */
        void insertGroupLight(SiteEntity site,LightCombinationEntity lightCombination);

        /**
         * 删除灯光组合
         * @param lightCombination
         */
        void deleteGroupLight(SiteEntity site,LightCombinationEntity lightCombination);

        /**
         * 更新灯光组合
         * @param lightCombination
         */
        void updateGroupLight(SiteEntity site,LightCombinationEntity lightCombination);
    }

    interface View {
        /**
         * 显示灯光组合列表
         */
        void  loadGropLight(List<LightCombinationEntity> lightCombinationList);

        /**
         * 刷新适配器
         */
        void  refreshAdapter(LightCombinationEntity lightCombination);

    }


}
